home *** CD-ROM | disk | FTP | other *** search
- /**************************
- Technorati Sidebar
- By Neo101
- Version 1.0.0
- **************************/
-
- checkSettingsFile()
-
- var itemsOnPage = parseInt( readSetting('itemsOnPage', '10') )
-
- var showLoadingMessage = readSetting('showLoadingMessage', '1')
-
- var searchResults = new Array()
-
- var element
- var start
- var xmlhttp
-
- var API_KEY = '1136bb50c3675d2d72265e0022ef355d'
- var feedLimit = readSetting('feedLimit', '20')
-
- var timer
- var intervalTime = readSetting('intervalTime', '15') // in minutes
- var enableInterval = readSetting('enableInterval', '0')
-
- var authority = readSetting('authority', 'a1')
- var language = readSetting('language', 'en')
-
- window.onload = function(){
- setAutoUpdateText()
-
- document.getElementById('keywords').select()
-
- setSelectBox('authority')
- setSelectBox('language')
- }
-
-
- function search(noClear){
- var keywords = encodeURIComponent( document.getElementById('keywords').value )
- if(keywords == ''){
- document.getElementById('searchResults').innerHTML = 'Please enter a keyword!'
- document.getElementById('searchResultsNextPreviousHead').innerHTML = ''
- document.getElementById('searchResultsNextPreviousBottom').innerHTML = ''
- return
- }
- var format = 'RSS'
-
- var language = document.getElementById('language').value
- var authority = document.getElementById('authority').value
-
- var url = 'http://api.technorati.com/search?key=' + API_KEY + '&format=' + format + '&limit=' + feedLimit +
- '&authority=' + authority + '&language=' + language + '&query=' + keywords
- element = 'searchResults'
- start = 0
-
- if(noClear == null){
- document.getElementById('searchResults').innerHTML = 'Loading....<br>This could take a while...'
- document.getElementById('searchResultsNextPreviousHead').innerHTML = ''
- document.getElementById('searchResultsNextPreviousBottom').innerHTML = ''
-
- if(enableInterval == '1'){
- if(timer){
- window.clearInterval(timer)
- }
- timer = window.setInterval('search(true)', intervalTime * 1000 * 60)
- }
- }
-
- loadXMLDoc(url, onResponseView)
- }
-
-
- function blogInfoSearch(){
- var url = encodeURIComponent( document.getElementById('url').value )
- if(url == ''){
- document.getElementById('blogInfo').innerHTML = 'Please enter a keyword!'
- return
- }
- if(url.search(/\./) == -1){
- showError('Please enter a valid domain or URL')
- return
- }
-
- var format = 'RSS'
-
- var url = 'http://api.technorati.com/bloginfo?key=' + API_KEY + '&format=' + format + '&url=' + url
- element = 'blogInfo'
- start = 0
- document.getElementById('blogInfo').innerHTML = 'Loading....<br>This could take a while...'
-
- loadXMLDoc(url, onResponseBlogInfo)
- }
-
-
- function loadXMLDoc(url, stateChange){
- xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
- xmlhttp.onreadystatechange = stateChange;
- xmlhttp.open("GET", url, true);
- xmlhttp.setRequestHeader("User-Agent","Maxthon Technorati Sidebar 1.0")
- xmlhttp.send(null)
- }
-
-
- function checkReadyState(obj){
- if(obj.readyState == 4){
- if(obj.status == 200 || obj.status == 201){
- return true
- }
- if(obj.status == 0){
- if(element == 'blogInfo'){
- blogInfoSearch()
- } else {
- search()
- }
- return false
- }
- else{
- showError(obj.status + ' ' + obj.responseText)
- }
- }
- return false
- }
-
-
- function onResponseView(){
- if( ! checkReadyState(xmlhttp) ){
- return
- }
-
- var responseXML = xmlhttp.responseXML
-
- if(responseXML == null){
- showError('Error 212: Could not parse feed <br>Make sure Technorati is working')
- return
- }
-
- var response = ''
-
- var rssFeeds = new Array()
-
- items = responseXML.getElementsByTagName("item")
-
- if(items && items.length != 0 ){
- for(var j=0; j < items.length; j++) {
- addFeedItem(items[j], rssFeeds)
- }
- }
- else{
- response += '<b>Nothing found</b>'
- }
-
-
- response += writeFeedHtml( rssFeeds )
-
- if(rssFeeds.length == 0){
- response += '<b>Nothing found</b>'
- }
-
- document.getElementById(element).innerHTML = response
-
- eval( element + ' = rssFeeds ')
-
- if(rssFeeds.length > 0){
- createNextPreviousLinks()
- }
- }
-
-
- function onResponseBlogInfo(){
- if( ! checkReadyState(xmlhttp) ){
- return
- }
-
- var responseXML = xmlhttp.responseXML
-
- if(responseXML == null){
- showError('Error 212: Could not parse feed <br>Make sure Technorati is working')
- return
- }
-
- var title = responseXML.getElementsByTagName("title")[2].text
-
- if(title == ''){
- var response = 'No information found about this URL'
- response += '<br><a href="#" onclick="currentSiteDomainOnly()">Try domain name only</a>'
- } else {
-
- var response = 'Result for ' + title
-
- var inboundblogs = responseXML.getElementsByTagName("tapi:inboundblogs")[0].text
- var inboundlinks = responseXML.getElementsByTagName("tapi:inboundlinks")[0].text
- var rank = responseXML.getElementsByTagName("tapi:rank")[0].text
- if(responseXML.getElementsByTagName("comments")[0]){
- var link = responseXML.getElementsByTagName("comments")[0].text
- }
- if(responseXML.getElementsByTagName("tapi:rssurl")[0]){
- var rssurl = responseXML.getElementsByTagName("tapi:rssurl")[0].text
- }
- if(responseXML.getElementsByTagName("tapi:atomurl")[0]){
- var atomurl = responseXML.getElementsByTagName("tapi:atomurl")[0].text
- }
-
- if(responseXML.getElementsByTagName("tapi:firstname")[0]){
- var firstname = responseXML.getElementsByTagName("tapi:firstname")[0].text
- }
- if(responseXML.getElementsByTagName("tapi:lastname")[0]){
- var lastname = responseXML.getElementsByTagName("tapi:lastname")[0].text
- }
- if(responseXML.getElementsByTagName("tapi:thumbnailpicture")[0]){
- var pictureURL = responseXML.getElementsByTagName("tapi:thumbnailpicture")[0].text
- }
- if(responseXML.getElementsByTagName("guid")[0]){
- var profileURL = responseXML.getElementsByTagName("guid")[0].text
- }
-
- response += '<br><b>Blogs linking here:</b> ' + inboundblogs
- response += '<br><b>Links here:</b> ' + inboundlinks
- response += '<br><b>Blog Rank:</b> ' + rank
- if(firstname && lastname){
- response += '<br><b>Owned by:</b> ' + firstname + ' ' + lastname
- }
- if(profileURL){
- response += '<br><a href="' + profileURL + '" target=_blank>Profile</a>'
- }
- if(pictureURL){
- response += '<br><img src="' + pictureURL + '">'
- }
- if(link){
- response += '<br><a href="' + link + '" target=_blank>More info</a>'
- }
- if(rssurl){
- response += '<br><a href="' + rssurl + '" target=_blank>RSS url</a>'
- }
- if(atomurl){
- response += '<br><a href="' + atomurl + '" target=_blank>ATOM url</a>'
- }
- }
-
- document.getElementById(element).innerHTML = response
- }
-
-
- function writeFeedHtml( array){
- var response = '<ul>'
-
- for(var i=0; i<array.length && i<itemsOnPage; i++){
- var item = array[i]
- response += '<li>'+
- //'<a href="' + item.link + '" target=_blank class=title title="' + item.tooltip + '" '+
- // 'onmouseover="showLink(\'' + item.link + '\')" onmouseout="hideLink()">' + item.title + '</a>' +
- '<h3>' +
- '<span onclick="expandCollapse(this.parentElement.nextSibling.id)" class=expandCollapse>' +
- item.title +
- '</span>' +
- ' <a href="' + item.link + '" target=_blank title="' + item.link + '">»</a></h3>' +
- '<div style="display:none" id="item' + i + '">' + item.tooltip + '</div>'
- '<\/li>'
- }
- response += '<\/ul>'
-
- return response
- }
-
-
- function addFeedItem( item , array){
- var title = ''
- var link = ''
- var description = ''
- var pubDate = ''
- var inboundblogs = ''
- var inboundlinks = ''
- //var linkcreated = ''
-
- var nodes = item.childNodes
-
- for(var i=0; i < nodes.length; i++){
- var tagName = nodes(i).tagName
- var tagText = nodes(i).text
- if(tagName=='title'){
- title = replacer(tagText)
- }
- else if(tagName=='link'){
- link = tagText
- }
- else if(tagName=='description'){
- description = replacer(tagText)
- }
- else if(tagName=='tapi:inboundblogs'){
- inboundblogs = replacer(tagText)
- }
- else if(tagName=='tapi:inboundlinks'){
- inboundlinks = replacer(tagText)
- }
- /* else if(tagName=='tapi:linkcreated'){
- linkcreated = replacer(tagText)
- } */
- else if(tagName=='pubDate'){
- pubDate = replacer(tagText)
- }
- }
-
- var displayedLink = link.replace('http://', '').replace(/\/.*/,'')
-
- var tooltip = '<b>Link:</b> <a href="' + link + '" target=_blank title="' + link + '">' + displayedLink + '</a>'
- tooltip += '<br><b>Description:</b> ' + description
- tooltip += '<br><b>Date:</b> ' + pubDate
- //tooltip += '<br><b>Created:</b> ' + linkcreated
- tooltip += '<br><b>Links:</b> ' + inboundlinks
- tooltip += '<br><b>Blogs:</b> ' + inboundblogs
-
-
- if(title != '' && link != ''){
- array.push( {'title':title,
- 'link':link,
- 'description':description,
- 'tooltip':tooltip,
- 'pubDate':pubDate
- } )
- }
- }
-
-
- function createNextPreviousLinks(){
- var next = start + itemsOnPage
- var previous = start - itemsOnPage
-
- var nextPreviousHTML = ''
-
- if( previous >= 0 ){
- nextPreviousHTML += '<a href="javascript:showFeedPart(\'' + element + '\', ' + previous + ')" class=prevNext>« Previous</a>'
- }
- if( previous >= 0 && next < feedLimit ){
- nextPreviousHTML += '<span style="width:30px"></span>'
- }
- if( next < feedLimit ){
- nextPreviousHTML += '<a href="javascript:showFeedPart(\'' + element + '\', ' + next + ')" class=prevNext>Next »</a>'
- }
-
- document.getElementById(element + 'NextPreviousHead').innerHTML = nextPreviousHTML
- document.getElementById(element + 'NextPreviousBottom').innerHTML = nextPreviousHTML
- }
-
-
- function showFeedPart(element, start){
- eval('var array = ' + element)
- top.start = start
- top.element = element
- array = array.slice(start,start + itemsOnPage)
-
- var response = '<ul>'
- response += writeFeedHtml( array )
- response += '</ul>'
-
- document.getElementById(element).innerHTML = response
-
- createNextPreviousLinks()
- }
-
-
- function replacer(s){
- return s.replace(/&/g,'&').replace(/"|"/g,'');
- }
-
-
- function setSelectBox(id, feed){
- var selectElement = document.getElementById(id)
- for(var i=0; i<selectElement.options.length; i++){
- if( eval('selectElement.options[i].value.search(' + feed + ') != -1') ){
- selectElement.selectedIndex = i
- }
- }
- }
-
-
- function setAutoUpdateText(){
- var text
- if(enableInterval == '0'){
- text = 'Enable AutoRefresh'
- } else {
- text = 'Disable AutoRefresh'
- }
- document.getElementById('autoRefreshButton').innerHTML = text
- }
-
-
- function setSelectBox(id){
- var selectElement = document.getElementById(id)
- for(var i=0; i<selectElement.options.length; i++){
- if( eval('selectElement.options[i].value == "' + eval(id) + '"') ){
- selectElement.selectedIndex = i
- return
- }
- }
- }